// 1460. 通过翻转子数组使两个数组相等
// 给你两个长度相同的整数数组 target 和 arr 。

// 每一步中，你可以选择 arr 的任意 非空子数组 并将它翻转。你可以执行此过程任意次。

// 如果你能让 arr 变得与 target 相同，返回 True；否则，返回 False 。

/**
 * @param {number[]} target
 * @param {number[]} arr
 * @return {boolean}
 */
var canBeEqual = function (target, arr) {
  // 只要target 含有 arr的所有元素就能通过反转使其相等
  let n = target.length
  let map = Object.create(null)
  for (let i = 0; i < n; i++) {
    if (map[target[i]]) {
      map[target[i]]++
    } else {
      map[target[i]] = 1
    }
  }

  for (let j = 0; j < n; j++) {
    if (!map[arr[j]]--) {
      return false
    }
  }
  return true
};

var target = [1, 2, 3, 4], arr = [2, 4, 1, 3]
console.log(canBeEqual(target, arr))

